
#include "lib.h"

#include "Compare.h"
#include "Blob.h"
#include "Vec.h"
#include "ManyFunc.h"
#include "shared_ptr_han.h"


//template <typename T>
//size_t Foo<T>::ctr = 0;


template <typename T>
allocator<T> Vec<T>::alloc;
int main() {


	/*cout << compare(1, 0) << endl;

	vector<int> vec{ 1,2,3 }, vec2{ 4,5,6 };
	cout << compare(vec, vec2) << endl;

	A a(1), b(2);
	cout << compare(a, b) << endl;*/

	//vector<int> v{ 1,2,3,4,5,6,7,8,9 };
	//auto is_in_vector = v.cend() != han::find(v.cbegin(), v.cend(), 5);
	//cout << (is_in_vector ? "found\n" : "not found\n");

	//std::list<std::string> l = { "aa", "bb", "cc", "dd", "ee", "ff", "gg" };
	//auto is_in_list = l.cend() != han::find(l.cbegin(), l.cend(), "zz");
	//std::cout << (is_in_list ? "found\n" : "not found\n");


	//int a[5]{ 1,2,3,4,5 };
	//print(a);
	//char b[3]{ 'a','c','d' };
	//print(b);

	//string s[] = { "ssss","bbbb","ddd" };
	//cout << *(mybegin(s)) << endl;
	//cout << *(myend(s)-1) << endl;

	/*char s[] = "sddd";
	cout << getSize(s) << endl;*/

	//Foo<string> fs;
	//Foo<int> fi, fi2, fi3;

	//fs.setCount(1);
	//fi.setCount(2);

	//cout << fs.count() << endl;
	//cout << fi.count() << endl;
	//cout << fi2.count() << endl;

	//Blob<string> strBlob={ "aa","bb","dd" };
	
	/*Blob<string> ss{ "aa","bb","cc" };
	for (auto iter = ss.begin(); iter != ss.end(); ++iter) {
		cout << *iter << endl;
	}
	Blob<int> ss2{1,2,3,4,5,6,7,8,9};
	for (auto iter = ss2.begin(); iter != ss2.end(); ++iter) {
		cout << *iter << endl;
	}*/

	/*Vec<int> vec{ 1,2,3,4,5 };

	for (auto i : vec) {
		cout << i << endl;
	}*/

	/*vector<int> vec = { 1,2,3,4,5 };
	test_16_19_2(vec, cout);*/

	/*double *p = new double(10.2);
	DebugDelete d;
	d(p);
	int *ip = new int(10);
	DebugDelete()(ip);
*/

	//int *a = new int(5);

	//han::shared_ptr<int> ptr = han::make_shared<int>(10);
	//cout << *ptr << endl;

	MyBad m;


	return 0;
}